home *** CD-ROM | disk | FTP | other *** search
- 0 REM" PONZO*82*WATERLOO
- 1 [143]"
- 5 POKE53281,15:POKE53280,12:PRINT"[144]"
- 10 PRINT"[147] C64 TUTOR-7
- 15 [153]"ORTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^"
- 20 [153]"(null) ...AND MORE MACHINE LANGUAGE... WAIT (null)":MS$[178]" WELCOME! "
- 25 [153]"/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPSTOP"
- 35 [141]60000:[141]63100:[141]63000
- 40 [141]20000
- 45 [153]"LOAD":[153]SD$"RECALL THAT THE 6510WAIT HAS A"
- 50 [153]"NUMBER OF INTERNAL REGISTERS...":[141]63000:[153]A$X$Y$
- 60 [141]39100:[153]"SOME COMMANDS AFFECT THE NUMBERS"
- 70 [153]"CONTAINED IN THESE REGISTERS..":[141]63000:[153]SD$""
- 90 [153]"ADCWAIT ANDWAIT ASLWAIT CMPWAIT CPXWAIT CPYWAIT DECWAIT DEXWAIT DEY"
- 100 [153]"EORWAIT INCWAIT INXWAIT INYWAIT LDAWAIT LDXWAIT LDYWAIT LSRWAIT ORA"
- 110 [153]"PLAWAIT PLPWAIT ROLWAIT RORWAIT RTIWAIT SBCWAIT TAXWAIT TSXWAIT TXA"
- 120 [153]"..AND TYAWAIT!!":MS$[178]"WHERE'SBITWAIT" :[141]63100:[141]63000
- 130 [141]39100:[153]"THE 6510WAIT KEEPS TRACK OF WHETHER"
- 140 [153]"ONE OF THESE OPERATIONS PRODUCES A ZWAITERO"
- 150 [153]"OR NWAITEGATIVE RESULT..AND, FOR ADCWAIT"
- 160 [153]"AND SBCWAIT (ADD & SUBTRACT), WHETHER"
- 170 [153]"THE OPERATION PRODUCES AN OVERFLOWWAIT.":[141]63000
- 180 [141]39100:[153]"THE PWAITROCESSOR STATUS REGISTER"
- 190 [153]"HAS 8 BITS. THREE BITS ARE DEVOTED TO"
- 200 [153]"NWAITEGATIVE,OVWAITERFLOW AND ZWAITERO.":[141]63000:[153]P$
- 210 [151]P(0),142:[151]P(1),150:[151]P(6),154:[141]63000
- 215 [151]P(0),32:[151]P(1),32:[151]P(6),32
- 220 [141]39100:[153]"IF AN OPERATION PRODUCES A NWAITEGATIVE"
- 230 [153]"RESULT,N=1WAIT":[151]P(0),177:[141]63000
- 240 [141]39100:[153]"IF IT'S NOT NEGATIVE THEN N=0WAIT"
- 250 [153]"(MEANING IT'S POSITIVE!)":[151]P(0),176:[141]63000
- 260 [153]"LOADA NEGATIVE NUMBER HAS A '1'"
- 270 [153]"IN THE MSB POSITION."
- 280 [153]"IF ONE OF THE OPERATIONS WHICH AFFECT"
- 290 [153]"THE A,X OR Y-REGISTERS IS PERFORMED,"
- 300 [153]"AND THE MSB OF THE RESULT IS '1', THEN"
- 310 [153]"N=1WAIT. IT'S THAT SIMPLE!":[141]63000
- 320 MS$[178]" N=MSBWAIT ":[141]63100:[141]63000
- 330 [153]"LOADBMI $1234WAIT WILL TEST THE NWAIT-BIT AND,"
- 340 [153]"IF IT'S '1', WILL BRANCH TO $1234."
- 350 [153]"(SINCE THE 'RESULT' IS MIWAITNUS!)"
- 360 [153]"BPL $1234WAIT WILL BWAITRANCH TO $1234"
- 370 [153]"IF THE 'RESULT' IS PLWAITUS (N=0)."
- 380 [153]"IF WE LDA #$D3WAIT, THEN N=1"
- 390 [153]"BECAUSE $D0=11010011 IN BINARY AND MSB=1"
- 400 [153]"SOCMDCMDFREFREON..BPL $1234WAIT WILL NOTCMDCMDCMDFREFREFREON TAKE US"
- 410 [153]"TO $1234.":MS$[178]" CAREFUL!!":[141]63000:[141]63100
- 420 [153]"LOAD THE V-BITWAIT"
- 425 [153]"SINCE THE MSB CARRIES THE 'SIGN' OF A"
- 430 [153]"NUMBER (IN 'SIGNED ARITHMETIC')"
- 440 [153]"THEN AN ADCWAIT OR SBCWAIT WHICH CAUSES"
- 450 [153]"THE NEXT-TO-MSB TO 'OVERFLOW' INTO THE"
- 460 [153]"SIGN-BIT WILL CAUSE V=1WAIT."
- 470 [153]"IF 'SIGNED ARITHMETIC' IS NOT BEING"
- 480 [153]"PERFORMED THEN WE CAN IGNORE THE V-BIT."
- 490 [153]"ALTHOUGH ADCWAIT AND SBCWAIT MAY SET V=1"
- 500 [153]"WE CAN FORCE V=0 WITH THE COMMAND:"
- 510 [153]"CLVWAIT=CLWAITEAR THE VWAIT-BIT.":[141]63000:[141]10000
- 520 [153]"LOADIT'S OFTEN NECESSARY TO JWAITUMPWAIT FROM"
- 530 [153]"ONE PLACE TO ANOTHER IN A PROGRAM."
- 540 [153]"WE CAN USE: JMP $1234WAIT."
- 550 [153]"OF COURSE WECLOSEHAD BETTER HAVE SOME"
- 560 [153]"INSTRUCTIONS AT $1234!!"
- 570 [153]"IF OUR PROGRAM IS AT $1000-$2000"
- 590 [153]"AND IT HAS A JMP $1234WAIT,THAT'S OK."
- 600 [153]"IF WECLOSEPHYSICALLY MOVE THIS PROGRAM TO,"
- 610 [153]"SAY, $3000 TO $4000 (PERHAPS TO MAKE"
- 620 [153]"ROOM FOR SOME BASICWAIT AT $0801 TO $2000)"
- 630 [153]"THEN THE RELOCATED PROGRAM SHOULD NOT"
- 640 [153]"HAVE JMP $1234WAIT IN IT!!":[141]63000
- 650 [153]"LOADHERE'S ANOTHER USE OF THE V-BIT."
- 660 [153]"SUPPOSE WE HAVE JMP $1234WAIT LOCATED"
- 670 [153]"IN OUR PROGRAM AT $1200-$1202."
- 680 [153]"$1200 $1201 $1202 $1203"
- 690 [153]" 4CWAIT 34WAIT 12WAIT ***"
- 700 [153]" ^JMP ^HI ^LO ^NEXT"
- 710 [153]" ^INST ^BYTE ^BYTE ^INST"
- 720 [153]"WE WOULD NORMALLY CONTINUE TO THE NEXT"
- 730 [153]"INSTRUCTION AT $1203WAIT BUT,BECAUSE OF"
- 740 [153]"THE JMPWAIT, WE ACTUALLY MOVE AHEAD TO $1234"
- 750 [153]"WHICH IS $31WAIT MEMORY LOC'NS FARTHER ON!":[141]63000
- 760 [153]"LOADWE CAN PERFORM A RELATIVE JUMPWAIT, BY"
- 770 [153]"$31WAIT MEMORY LOCATIONS, BY WRITING:"
- 780 [153]"CLV WAIT=CLEAR V-BIT (SET V=0)."
- 790 [153]"BVC #$31WAIT=BRANCH AHEAD $31 LOC'NS IF V=0"
- 800 [153]"THIS WILL TAKE US TO $1234 AND THE"
- 810 [153]"PROGRAM IS 'RELOCATABLE'!":[141]63000:[153]SD$
- 820 [153]"$1200 $1201 $1202"
- 830 [153]" B8WAIT 50WAIT 31"
- 840 [153]" ^CLV ^BVC ^# LOC'NS"
- 850 [153]"IF WE DON'T USE JMPWAITS, BUT 'RELATIVE"
- 860 [153]"BRANCHES' INSTEAD, OUR PROGRAM WILL"
- 870 [153]"RUN ANYWHERE IN MEMORY!":[141]63000
- 875 [153]"LOADCONFUSING??WAIT":[153]"WHEN DO WECLOSESAY BVC $1234WAIT"
- 876 [153]"AND WHEN BVC #$31WAIT?*!"
- 877 [153]"ACTUALLY, ALTHOUGH AN 'ASSEMBLER' SUCH"
- 878 [153]"AS MICROMONWAIT WILL ALLOW US TO SAY"
- 879 [153]"BVC $1234WAIT, THE MACHINE LANGUAGE CODE"
- 880 [153]"GENERATED WILL READ BVC #$31WAIT!!"
- 881 [153]"THAT IS, THE INSTRUCTION WILL APPEAR"
- 882 [153]"IN MEMORY AS 50WAIT 31WAIT..MEANING BRANCH"
- 883 [153]"AHEAD $31 LOC'NS IF V=0.":[141]63000
- 885 [153]"LOADALL BWAITRANCH INSTRUCTIONS ARE 'RELATIVE':"
- 890 [153]"BCSWAIT=BRANCH IF CARRY IS SET(C=1)"
- 900 [153]"BCCWAIT=BRANCH IF CARRY IS CLEAR(C=0)"
- 910 [153]"BEQWAIT=BRANCH IF Z-BIT IS SET(Z=1)"
- 920 [153]"BNEWAIT=BRANCH IF Z-BIT IS CLEAR(Z=0)"
- 930 [153]"BMIWAIT=BRANCH IF N-BIT IS SET(N=1)"
- 940 [153]"BPLWAIT=BRANCH IF N-BIT IS CLEAR(N=0)"
- 950 [153]"BVSWAIT=BRANCH IF V-BIT IS SET(V=1)"
- 960 [153]"BVCWAIT=BRANCH IF V-BIT IS CLEAR(V=0)":[141]63000
- 965 MS$[178]"RELATIVES?":[141]63100
- 970 [153]"LOAD":[153]P$:[153]SD$"SOME OF THE BITS OF THE PWAITROCESSOR"
- 980 [153]"STATUS REGISTER CAN BE SET(=1), AND"
- 990 [153]"SOME CAN BE CLEARED(=0).":[141]63000:[141]39100
- 1000 [153]"CLVWAIT=CLEARS OVWAITERFLOW":[151]P(1),176:[141]63000:[141]39100
- 1005 [151]P(1),32
- 1010 [153]"CLCWAIT=CLEARS CWAITARRY":[151]P(7),176:[141]63000:[141]39100
- 1015 [151]P(7),32
- 1020 [153]"CLDWAIT=CLEARS DWAITECIMAL MODE FLAG":[151]P(4),176:[141]63000
- 1025 MS$[178]"WHAT FLAG?":[141]63100:[141]63000:[141]39100:[151]P(4),132
- 1030 [153]"CLIWAIT=CLEARS IWAITNTERRUPT FLAG":[151]P(5),176:[141]63000
- 1035 MS$[178]"WHAT FLAG!WAIT":[141]63100:[151]P(5),137:[141]63000:[141]39100
- 1040 [153]"LOAD"SD$"ALTOGETHER NOW..":[153]P$
- 1050 [151]P(0),14:[151]P(1),22:[151]P(4),4:[151]P(5),9:[151]P(6),26:[151]P(7),3
- 1055 [141]63000
- 1060 [141]39100:[153]"NWAIT=NWAITEGATIVE FLAG BIT.":[151]P(0),[194](P(0))[170]128
- 1061 [141]63000
- 1070 [153]SD$"VWAIT=OVWAITERFLOW FLAG BIT.":[151]P(1),[194](P(1))[170]128:[141]63000
- 1080 [153]SD$"DWAIT=DWAITECIMAL MODE FLAG BIT.":[151]P(4),[194](P(4))[170]128
- 1081 [141]63000
- 1090 [153]SD$"IWAIT=IWAITNTERRUPT FLAG BIT.":[151]P(5),[194](P(5))[170]128
- 1091 [141]63000
- 1100 [153]SD$"ZWAIT=ZWAITERO FLAG BIT.":[151]P(6),[194](P(6))[170]128:[141]63000
- 1110 [153]SD$"CWAIT=CWAITARRY FLAG BIT.":[151]P(7),[194](P(7))[170]128
- 1115 [141]63000
- 1120 [151]P(2),214:MS$[178]"NOT USED!!WAIT":[141]63100
- 1125 [161]Z$:[139]Z$[178]""[167][151]P(2),32:[137]1120
- 1130 [151]P(3),130:[141]39100:[153]"WHEN THE 6510 GETS A BREAKWAIT COMMAND"
- 1140 [153]"(WHICH IS 00WAIT) "
- 1150 [153]"THE BWAITREAK BIT IS SET(B=1)":[141]63000:[151]P(3),130
- 1160 MS$[178]"COMMAND=00":[141]63100:[141]63000
- 1170 [153]"LOADJUST IN CASE YOU'RE WONDERING.."
- 1180 [153]"THE 6510WAIT HAS A DECIMALWAIT MODE WHEREBY"
- 1190 [153]"ARITHMETIC OPERATIONS ARE PERFORMED"
- 1200 [153]"ASSUMING ALL NUMBERS ARE NOTWAIT IN DECIMAL"
- 1210 [153]"BUT RATHER IN BWAITINARY CWAITODED DWAITECIMAL!"
- 1220 [153]"IF WE WANT TO OPERATE IN 'DECIMAL"
- 1230 [153]"MODE' WE MUST SET THE DWAIT-FLAG TO '1':"
- 1240 [153]"SED"
- 1250 [153]"TO GET OUT OF THIS MODE WE CLEAR THE"
- 1260 [153]"DECIMAL MODE FLAG TO '0':"
- 1270 [153]"CLD":[141]63000
- 1280 [153]"LOADFURTHER..THE 6510WAIT CAN BE INTERRUPTED"
- 1290 [153]"BY LOWERING THE VOLTAGE ON ONE OF IT'S"
- 1300 [153]"PINS..THE IRQWAIT OR ICMDFREONNTERRUPT RCMDFREONEQCMDFREONUEST PIN."
- 1310 [153]"(EXTERNAL DEVICES DO THIS TO THE 6510"
- 1320 [153]"ALL THE TIME!)"
- 1330 [153]"WHEN THE 6510 GETS AN IRQWAIT IT STOPS"
- 1340 [153]"WHAT IT'S DOIN'...SERVICES THE"
- 1350 [153]"INTERRUPTING DEVICE..THEN RETURNS"
- 1360 [153]"FROM THE INTERRUPT TO CONTINUE.":[141]63000
- 1370 [153]"LOADFOR EXAMPLE, EVERY JIFFY(=1/60 SECOND)"
- 1380 [153]"THE 6510 INTERRUPTS WHATEVER IT'S DOIN'"
- 1390 [153]"AND UPDATES THE INTERNAL CLOCK,CHECKS"
- 1400 [153]"THE KEYBOARD TO SEE IF YOU'RE PRESSING"
- 1410 [153]"THE STOPWAIT KEY, ETC."
- 1420 [153]"WHETHER OR NOT THE 6510 WILL LET ITSELF"
- 1430 [153]"BE INTERRUPTED DEPENDS UPON A MAGIC"
- 1440 [153]"BIT IN THE PWAIT-REGISTER."
- 1450 [153]"GUESS WHICH ONE?!!":[141]63000
- 1460 [153]"LOAD"P$:[151]P(0),14:[151]P(1),22:[151]P(3),2:[151]P(4),4:[151]P(5),137
- 1470 [151]P(6),26:[151]P(7),3
- 1480 [153]SD$"YOU BET!"
- 1490 [153]"IF THE IWAIT BIT IS CLEAR(=0) THE 6510"
- 1500 [153]"WILL LETWAIT ITSELF BE INTERRUPTED."
- 1510 [153]"IF I=1 HOWEVER IT WILL NOTWAIT!"
- 1520 [153]"SEIWAIT WILL SET I=1"
- 1530 [153]"CLIWAIT WILL CLEAR I=0"
- 1540 [141]63000
- 1550 [153]"LOADSO, IF YOU WANT THE 6510 TO IGNORE"
- 1560 [153]"INTERRUPTS (INCLUDING THE POOR GUY"
- 1570 [153]"BANGING ON THE STOPWAIT KEY!)"
- 1580 [153]"START YOUR PROGRAM WITH SEIWAIT AND,"
- 1590 [153]"...TO AVOID ANY VIOLENCE..."
- 1600 [153]"(EVENTUALLY) END IT WITH CLIWAIT.":[141]63000
- 1610 [153]"LOADAND THEN THERE ARE SUBROUTINESWAIT:"
- 1620 [153]"IF WE WRITE LO-O-ONG MACHINE LANGUAGE"
- 1630 [153]"PROGRAMS (USING AN ASSEMBLER SO WE"
- 1640 [153]"DON'T HAVE TO ENTER THE HEX BYTES"
- 1650 [153]"INTO MEMORY BUT CAN USE ASSEMBLY"
- 1660 [153]"LANGUAGE) THEN IT'S CONVENIENT TO"
- 1670 [153]"BREAK UP OUR LONG PROGRAM INTO WEE"
- 1680 [153]"PIECES=SUBROUTINES."
- 1690 [153]"(null)IN BASIC WE'D SAY: GOSUB 1000WAIT"
- 1700 [153]"(null)IN ASSEMBLER WE'D SAY: JSR $1234"
- 1710 [153]"(null)WHICH TRANSLATES TO: 20WAIT 34WAIT 12WAIT"
- 1720 [153]" IN MACHINE LANGUAGE!":[141]63000
- 1730 [153]"LOADBASIC SUBROUTINES MUST END IN RETURNWAIT"
- 1740 [153]"SO THE PROGRAM CAN GO BACK FROM WHERE"
- 1750 [153]"IT WAS 'CALLED'."
- 1760 [153]"IN ASSEMBLER WE END SUBROUTINES WITH"
- 1770 [153]"RTSWAIT=RWAITETWAITURN FROM SWAITUBROUTINE:"
- 1780 [153]"$1000 LDA #$00 "
- 1781 [153]"$1002 JSR $1234WAITTAN^"
- 1782 [153]"$1005 ----- WAIT (null)"
- 1783 [153]" ----- WAIT (null)"
- 1784 [153]" ----- (null)"
- 1785 [153]" ----- ."
- 1786 [153]"$1234 ***** WAIT_EXPSUBROUTINE"
- 1787 [153]" ***** "
- 1788 [153]" RTS "
- 1789 MS$[178]"THERE..AND":[141]63100:[141]63002
- 1790 [153]""
- 1791 [153]"$1002 JSR $1234WAIT "
- 1792 [153]"$1005 ----- WAIT_^"
- 1793 [153]" ----- WAIT (null)"
- 1794 [153]" ----- (null)"
- 1795 [153]" ----- ."
- 1796 [153]"$1234 ***** WAIT (null) "
- 1797 [153]" ***** WAIT (null)"
- 1798 [153]" RTS WAITTANEXP":MS$[178]"BACK AGAIN":[141]63100:[141]63000
- 1800 [153]"LOADJUST ONE MORE COMMAND...":[141]63000
- 1805 [153]"LOAD":[153]A$P$
- 1810 [153]SD$"LDA #$D3WAIT":N$[178]"11010011":[141]63010:[141]40110
- 1820 N$[178]"10000000":[141]40120:[141]63000:PP[178]300
- 1830 [153]SD$"RORWAIT=ROTATE RIGHT":N$[178]"01101001":[141]63010
- 1835 [151]P(7),32:[153]""[163]37)"0"
- 1836 [153]SD$"CARRY BIT REMOVED FOR SAFE KEEPING":[141]63000
- 1840 [153]""[166]17)"(null)CMD/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPONCMD^";:[151]P(7),49
- 1845 [141]40096:[153]""CL$:[153]CL$
- 1846 [153]SD$"AWAIT-REGISTER ROTATED ..INTO CARRY!":[141]63000
- 1850 [153]"^CMD/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN":[151]A(0),48
- 1860 [153]SD$"CARRY BIT STUFFED INTO MSB OF AWAIT.":[141]63000
- 1870 [153]"LOAD..AND THERE'S ROLWAIT WHICH ALSO"
- 1880 [153]"INVOLVES THE CWAITARRY BIT..":[141]63000
- 1890 [153]"LOADSUPPOSE WE WANT TO JSR $1234"
- 1900 [153]"BUT ALSO WANT TO RETAIN ALL THE NUMBERS"
- 1910 [153]"IN THE 6510 REGISTERS, AFTER RETURNING"
- 1920 [153]"FROM THE SUBROUTINE."
- 1930 [153]"WE CAN PUSHWAIT ALL THE REGISTERS ONTO"
- 1940 [153]"THE STACKWAIT WHICH CONSISTS OF SEVERAL"
- 1950 [153]"MEMORY LOCATIONS IN RAMWAIT..$100-$1FF."
- 1960 [153]"PHAWAIT=PUSH THE A-REGISTER ONTO THE STACK"
- 1970 [153]"PHPWAIT=PUSH THE P-REGISTER ONTO THE STACK":[141]63000
- 1980 [153]"LOADTO PUSH THE X AND Y REGISTERS WE:"
- 1990 [153]"TXAWAIT PHAWAIT AND TYAWAIT PHAWAIT."
- 2000 [153]"SO..WE:"
- 2010 [153]"PHAWAIT PHPWAIT TXAWAIT PHAWAIT TYAWAIT PHA"
- 2020 [153]"THEN..JSR $1234."
- 2030 [153]"LATER, AFTER RTSWAIT, WE WANT ALL"
- 2040 [153]"THOSE NUMBERS BACK IN THE REGISTERS."
- 2050 [153]"SO WE PULLWAIT THEM FROM THE STACK"
- 2060 [153]"IN THE REVERSE ORDERWAIT!!!"
- 2070 [153]"PLAWAIT TAYWAIT PLAWAIT TAXWAIT PLPWAIT PLA":[141]63000
- 2080 [153]"LOADTHE STACK IS A NICE PLACE TO STORE"
- 2090 [153]"BYTES TEMPORARILY. IF WE WANT TO"
- 2100 [153]"EXCHANGE THE CONTENTS OF MEMORY LOC'NS"
- 2110 [153]"$2000 AND $3000 THEN WE CAN:"
- 2120 [153]"LDA $2000WAIT PHAWAIT LDA $3000WAIT STA $2000"
- 2130 [153]"PLAWAIT STA $3000":MS$[178]" SLICK!WAIT":[141]63000:[141]63100
- 2140 [153]"LOADYOUWAIT DETERMINE WHAT THE FOLLOWING"
- 2150 [153]"SUBROUTINE DOES..":[141]63000
- 3000 [153]"LOAD., 6000 A2 00 LDX #$00
- 3001 PRINT"., 6002 BD 00 04 LDA $0400,X
- 3002 [153]"., 6005 48 PHA
- 3003 PRINT"., 6006 BD 40 05 LDA $0540,X
- 3004 [153]"., 6009 9D 00 04 STA $0400,X
- 3005 PRINT"., 600C 68 PLA
- 3006 [153]"., 600D 9D 40 05 STA $0540,X
- 3007 PRINT"., 6010 BD A0 04 LDA $04A0,X
- 3008 [153]"., 6013 48 PHA
- 3009 PRINT"., 6014 BD E0 05 LDA $05E0,X
- 3010 [153]"., 6017 9D A0 04 STA $04A0,X
- 3011 PRINT"., 601A 68 PLA
- 3012 [153]"., 601B 9D E0 05 STA $05E0,X
- 3013 PRINT"., 601E E8 INX
- 3014 [153]"., 601F D0 E1 CPX #$A0
- 3015 PRINT"., 6021 D0 DF BNE $6002
- 3016 [153]"., 6023 60 RTS
- 3020 M=6*4096:FORI=MTOM+35:READK:POKEI,K:NEXT
- 3030 DATA162,0,189,0,4,72,189,64,5,157,0,4,104,157,64,5,189,160,4
- 3040 DATA72,189,224,5,157,160,4,104,157,224,5,232,224,160,208,223,96
- 3050 U$="":V$="":FORI=1TOWD-1:U$=U$+"*":V$=V$+" ":NEXT
- 3055 PRINTBT$"[145][145][145][145]YOU CAN TRY IT!"
- 3100 GOSUB63000:PRINT"[147]";:FORI=1TO4:PRINTU$:NEXT:FORI=1TO4:PRINTV$:NEXT
- 3110 PRINT"END OF TUTOR7[146]"
- 3115 MS$="AU REVOIR![146]"
- 3120 FORI=1TO10:SYS6*4096:FORT=1TO500:NEXT:NEXT:GOSUB63100
- 3125 FORI=1TO10:GETZ$:NEXT:PRINTBT$"[145][145][145][145][145][145]SYS6*4096[145][145][145]":END
- 10000 PRINT"[147]":PRINTP$:PRINTSD$"[209]THE Z-BIT IS SET TO '1'"
- 10010 PRINT"IF EVERY BIT OF A 'RESULT' IS 00[146].":GOSUB63000
- 10020 POKEP(6),177:GOSUB63000:PRINTSD$"";
- 10030 PRINT"[209]Z=0 IF A 'RESULT' IS NOT[157][157][157][184][184][184][145] ZERO.":POKEP(6),176
- 10040 GOSUB63000
- 10050 PRINT"[147]":PRINTP$:PRINTSD$"AND THE CARRY[146] BIT.."
- 10060 PRINT"WHERE'S THE CARRY BIT!!":FORT=1TO10:PRINTCHR$(14);
- 10070 FORT1=1TO50:NEXT:PRINTCHR$(142);:FORT1=1TO50:NEXT:NEXT
- 10080 GOSUB63000:POKEP(7),131:GOSUB63000:RETURN
- 20000 PRINT"[147]HERE'S THE SET OF 6510[146] COMMANDS:"
- 20010 PRINT"ADC[146] AND[146] ASL[146] BCC[146] BCS[146] BEQ[146] BIT[146] BMI[146] BNE"
- 20020 PRINT"BPL[146] BRK[146] BVC[146] BVS[146] CLC[146] CLD[146] CLI[146] CLV[146] CMP"
- 20030 PRINT"CPX[146] CPY[146] DEC[146] DEX[146] DEY[146] EOR[146] INC[146] INX[146] INY"
- 20040 PRINT"JMP[146] JSR[146] LDA[146] LDX[146] LDY[146] LSR[146] NOP[146] ORA[146] PHA"
- 20050 PRINT"PHP[146] PLA[146] PLP[146] ROL[146] ROR[146] RTI[146] SBC[146] SEC[146] SED"
- 20060 PRINT"TXA[146] STA[146] STX[146] STY[146] TAX[146] TAY[146] TYA[146] TSX[146] TXA"
- 20070 PRINT"..AND TXS[146]!":GOSUB63000
- 20080 MS$="IMPRESSIVE":GOSUB63100
- 20090 GOSUB63000:RETURN
- 39000 PRINT"";:FORI=1TO17:PRINTCL$:NEXT:PRINT"";:RETURN
- 39100 PRINTSD$;:FORI=1TO15:PRINTCL$:NEXT:PRINTSD$;:RETURN
- 40096 POKEA(7),32:FORTT=1TOPP:NEXT:FORI=7TO1STEP-1:POKEA(I-1),32
- 40097 POKEA(I),VAL(MID$(N$,I,1))+48:FORTT=1TOPP:NEXT:NEXT:RETURN
- 40098 POKEA(0),32:FORTT=1TOPP:NEXT:FORI=0TO6:POKEA(I+1),32
- 40099 POKEA(I),VAL(MID$(N$,I+1,1))+48:FORTT=1TOPP:NEXT:NEXT:POKEA(7),48:RETURN
- 40110 FORI=0TO7:POKEA(I),160:FORTT=1TOPP:NEXT
- 40111 POKEA(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
- 40120 FORI=0TO7:POKEP(I),160:FORTT=1TOPP:NEXT
- 40121 POKEP(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
- 40130 FORI=0TO7:POKEX(I),160:FORTT=1TOPP:NEXT
- 40131 POKEX(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
- 40140 FORI=0TO7:POKEY(I),160:FORTT=1TOPP:NEXT
- 40141 POKEY(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
- 40160 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
- 40161 POKEM(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
- 41120 FORI=0TO7:POKEP(I),160:FORTT=1TOPP:NEXT
- 41121 POKEP(I),PEEK(A(I)):NEXT:RETURN
- 41130 FORI=0TO7:POKEX(I),160:FORTT=1TOPP:NEXT
- 41131 POKEX(I),PEEK(A(I)):NEXT:RETURN
- 41140 FORI=0TO7:POKEY(I),160:FORTT=1TOPP:NEXT
- 41141 POKEY(I),PEEK(A(I)):NEXT:RETURN
- 41160 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
- 41161 POKEM(I),PEEK(A(I)):NEXT:RETURN
- 41340 FORI=0TO7:POKEA(I),160:FORTT=1TOPP:NEXT
- 41341 POKEA(I),PEEK(X(I)):NEXT:RETURN
- 41360 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
- 41361 POKEM(I),PEEK(X(I)):NEXT:RETURN
- 41410 FORI=0TO7:POKEA(I),160:FORTT=1TOPP:NEXT
- 41411 POKEA(I),PEEK(Y(I)):NEXT:RETURN
- 41460 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
- 41461 POKEM(I),PEEK(Y(I)):NEXT:RETURN
- 60000 R$="[176][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][174][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][221][160][221][160][221][160][221][160][221][160][221][160][221][160][221][160][221]"
- 60001 R$=R$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][173][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][189]"
- 60002 A$=" A[146][145]"+R$:P$="P[146][145]"+R$
- 60003 X$=" X[146][145]"+R$:Y$="Y[146][145]"+R$
- 60004 M$="M[146][145]"+R$
- 60005 CR$="[176][192][174][157][157][157][221][221][157][157][157][173][192][189]"
- 60006 CC$=" A[146][221][157][157][157] [157] [157] [157] [157] [157][157][157] [157][157][157] [145] "
- 60007 WD=40:CRT=1024:PRINTCHR$(142)
- 60008 FORI=0TO7:A(I)=CRT+WD+3+2*I:P(I)=A(I)+20:X(I)=A(I)+3*WD:Y(I)=X(I)+20
- 60009 M(I)=Y(I)+3*WD:NEXT:C=CRT+7*WD+1
- 60010 SD$="":CL$="":FORI=1TOWD-1:CL$=CL$+" ":NEXT
- 60011 BT$="":FORI=1TO24:BT$=BT$+"":NEXT
- 60012 C$=CR$+"[176][192][179][157][157][157][221][157][221][157][221][157][221][157][171]_CARRY BIT"
- 60019 ML$=""
- 60020 BT$="":FORI=1TO24:BT$=BT$+"":NEXT
- 60021 PT$="[176][192][192][192][192][192][192][192][192][192][192][174][157][157][157][157][157][157][157][157][157][157][157][157][221][221][157][157][157][157][157][157][157][157][157][157][157][157][173][178][192][192][192][192][192][192][192][192][178][189]"
- 60022 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][206][163][163][163][163][163][163][163][163][163][163][163][163][205][157][157][157][157][157][157][157][157][157][157][157][157][157][157][165]============[167]"
- 60023 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][208][207][163][163][163][163][163][163][163][163][163][163][208][207][145][145][145][145][157][157][157][157][157][157][157][157][157][157][157][157]"
- 60024 PT$=BT$+"[145][145][145][145][145][145]"+PT$+"[144]"
- 60025 PRINTCHR$(142)
- 60099 PP=50
- 60100 RETURN
- 63000 PRINTBT$CL$;:FORTT=1TO50:NEXT
- 63001 PRINTBT$"RETURN[146] TO CONTINUE";:FORTT=1TO50:NEXT
- 63002 GETZ$:IFZ$<>""THEN63002
- 63003 GETZ$:IFZ$=""THEN63003
- 63004 RETURN
- 63010 PRINTBT$CL$;:FORTT=1TO50:NEXT
- 63011 PRINTBT$"[166][166][166][166][166][166][166][166]RETURN TO SEE IT HAPPEN[146][166][166][166][166][166][166][166][166]";:FORTT=1TO50:NEXT
- 63012 GETZ$:IFZ$<>""THEN63012
- 63013 GETZ$:IFZ$=""THEN63013
- 63014 RETURN
- 63100 FORT=1TO5:PRINTPT$MS$;
- 63101 PRINTPT$" ";
- 63102 PRINTPT$MS$;:NEXT
- 63103 RETURN
- 63200 GOSUB63000
- 63201 PRINTSD$;:FORT=1TO15:PRINTCL$:NEXT:PRINTSD$;:RETURN
- 63300 GOSUB63100:GOSUB63010:RETURN
- 63400 PRINT"";:FORI=1TO5:PRINTCL$:NEXT:PRINT"";:RETURN
- 63999 GOSUB60000:PRINT"[147]":GOTO3000
-